import axios from "axios"
import Vue from "vue"
import { errorAlert } from "../utils/alert"
import store from "../store"

// 1.配置环境
if (process.env.NODE_ENV === 'development') {
    // 开发环境
    Vue.prototype.$pre = "http://localhost:2000"
} else {
    // 生产环境
    Vue.prototype.$pre = ""
}

// 2.请求拦截
axios.interceptors.request.use(config => {
    // 请求逻辑

    // 请求拦截携带token（ 如果访问的地址，不是登录，就要写到token ）
    if (config.url != '/api/userlogin') {
        config.headers.authorization = store.getters.userInfo.token;
    }


    return config
})

// 3.响应拦截
axios.interceptors.response.use(res => {
    // 打印
    console.group("本次请求的地址是：" + res.config.url);
    console.log(res);
    console.groupEnd()

    // 处理失败逻辑
    if (res.data.code != 200) {
        errorAlert(res.data.msg)
    }

    // 掉线处理
    if (res.data.msg == "登录已过期或访问权限受限") {
        // 清除vuex和本地存储
        store.dispatch("changeuserInfo", {})
        // 跳转到登录
        router.push("/login")
    }

    // 响应逻辑
    return res
})


// get方式请求
/* 
url：请求地址
params：请求参数，默认参数时{}
*/
export const get = (url, params = {}) => {
    return axios({
        url,
        method: "get",
        params
    })

}


// post方式请求
/* 
url：请求地址
params：请求参数
haveFile：判断是否包含文件，包含传true，默认时false
*/
export const post = (url, params, haveFile = false) => {
    let d = null
    if (haveFile) {
        // 有文件
        d = new FormData()
        for (let k in params) {
            d.append(k, params[k])
        }
    } else {
        // 无文件
        d = params
    }
    return axios({
        url,
        method: "post",
        data: d
    })
}

